小布助手对话短文本语义匹配-周星星分享
好久没有写东西啦,一个是由于最近事情太多啦,还有就是一直在打这个小布助手对话短文本语义匹配的比赛。
正好借着得了这周周周星的机会,分享一下比赛心得与方法,和大家相互学习,共同进步。目前是初赛第四。
比赛【全球人工智能技术创新大赛-赛道三: 小布助手对话短文本语义匹配】链接如下:
https://tianchi.aliyun.com/competition/entrance/531851/introduction
比赛介绍
该比赛其实是一个短文本句子匹配任务(二分类),训练数据包含输入query-pair,以及对应的真值。由于数据脱敏,所以目前市面上已有的预训练模型不能直接使用,需要从头开始预训练任务。
下面从7个部分进行分享,如下:数据增强、模型训练方式、模型预训练技巧、模型魔改、模型融合、之前周星星的分享和后续工作。
数据增强
数据增强
1、对偶数据增强,即Q1-Q2 pair变成Q2-Q1 pair;
2、闭包数据增强,即Q1-Q2=1,Q2-Q3=1,则Q1-Q3=1;
注意:数据增强时要保证正负样本比例,与原始分布一致,否则无效果甚至导致效果变差。
模型训练方式
模型训练方式
半交互
1、ESIM
详细介绍:https://zhuanlan.zhihu.com/p/73408108
2、Bimpm
详细介绍:https://zhuanlan.zhihu.com/p/72403578
3、SentenceBert
详细介绍:https://zhuanlan.zhihu.com/p/113133510
注意:半交互是我们一开始的思路,底层使用双路bert,上层使用bert前模型等;并且使用ESIM单模加上trick,单模也可以上0.89,但是后面使用全交互,效果更好,就没有再继续实验了。
全交互
1、先MLM预训练,再微调
2、MLM预训练与微调一起做,苏神代码思路
注意:第二种方式会比较费时,相当于预训练和微调一起做,训练轮数需要较长,因此我们采用的是第一种预训练方式。如果你卡多,完全可以采用第二种预训练方式。
模型预训练技巧
模型预训练技巧
1、全词掩码WWM,通过统计常在一起token的概率,找到全词;
2、n-gram混合掩码,采用1、2、3-gram混合掩码;
3、pair对数据与单句数据一起预训练;
4、使用开源模型的权重进行模型初始化。
模型魔改
模型魔改
1、BERT模型对Sequence Output求mean pooling与cls拼接,或者加和;
2、Multi-Dropout
3、BERT Embedding + Dense 与cls拼接;
4、BERT 多层cls拼接或加和;
5、BERT + GRU;
6、BERT + HighWay;
7、对抗学习FGM和PGD,PGD效果更好,但是耗时太久;
8、加统计特征。
注意:目前线上使用了第1、2、4、7。
模型融合
模型融合
模型融合讲究和而不同,因此我们这里使用了多种模型进行融合。
1、BERT
2、MacBERT
详细介绍:https://zhuanlan.zhihu.com/p/250595837
3、Zen
详细介绍:https://github.com/sinovation/ZEN
4、XlNet
5、UniLm
详细介绍:https://zhuanlan.zhihu.com/p/163483660
6、NeZha
详细介绍:https://zhuanlan.zhihu.com/p/100044919
注意:由于复赛有时间限制,我们进行了时间估算,感觉large模型无法满足时间要求,因此这里的模型使用的都是Base,loss降到0.3左右比较合适。
单模最佳线上能到0.906,融合之后线上目前0.917877。上大模型融合,应该会更好,但是目前还没训练出来,感觉是学习率的问题,训练到一半loss直接崩盘。
之前周星星的分享
之前周星星的分享
AI小花:
https://github.com/nilboy/reports/blob/master/gaic_track_3.md
ch12hu:
https://github.com/chizhu/tianchi-gaic-track3-share
lololol:
https://github.com/luoda888/2021-GAIIC-phase3-idea
猫老板:
https://gist.github.com/aloha12345x/b2b81c52dd5fee7b47e3a4eb537232f
后续工作
后续工作
1、预训练、微调尝试lookahead方法
2、模型融合Stacking
3、自蒸馏
4、伪标签(试过一次,效果不好,找bug中)
注意:复赛有限时,融合需谨慎。单模base模型效果才是王道。
笔者整理不易,认为有帮助的同学可以 点赞、关注、在看~~~
公众号开的晚,没有留言功能;欢迎大家加我微信,有问题可以私聊我。
打个广告,目前公司在南京(base南京)招NLP实习生,方向:语义理解、实体抽取、知识图谱、阅读理解、生成等。感兴趣的小伙伴可以给我发邮件或加我微信私聊。公司是南京云问网络技术有限公司。